package cn.idcast.demo02;
/*
文件的复制；一读一写
文件复制的步骤；
1，创建字节患处输入流对象，构造方法中传递字节输入刘
2，创建字节缓冲输出流对象，构造方法中传递字节输出流
3，使用字节缓冲输入流对象中的方法read，读取文件
4，使用字节缓冲输出流中的方法write，把读取的数据写入到内部缓冲区中
5，释放资源（会先把缓冲区中的数据，刷新到文件中）


使用缓冲流；
文件大小；466,255 字节
一次读写一个字节；31ms
使用数组缓冲读取多个字节，写入多个字节；0ms

 */
import java.io.*;

public class Demo02CopyFile {
    public static void main(String[] args) throws IOException {
        long s = System.currentTimeMillis();
        //1，创建字节患处输入流对象，构造方法中传递字节输入刘
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("E:\\WkJava\\day02-code\\jki.jpg"));
        //2，创建字节缓冲输出流对象，构造方法中传递字节输出流
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:\\jki.jpg"));
        //3，使用字节缓冲输入流对象中的方法read，读取文件
       /* //一次读取一个字节写入一个字节的方式
        int len = 0;
        while ((len = bis.read())!=-1){
            bos.write(len);
        }*/

        //使用数组缓冲读取多个字节，写入多个字节
        byte[] bytes = new byte[1024];
        int len = 0;
        while ((len = bis.read(bytes)) != -1) {
            //4，使用字节输出流对象的方法write，把读取到的字节写入到目的地的文件中
            bos.write(bytes, 0, len);
        }
        bos.close();
        bos.close();
        long e = System.currentTimeMillis();
        System.out.println("文件共耗时；" + (e - s) + "ms");
    }
}
